package com.suray.wcs.service.pojo;

import com.suray.wcs.res.enums.PalletStatus;
import lombok.Data;

import java.util.List;

@Data
public class Rgv60InfoSingle {

    //车辆编号
    private int rgvNo;

    //机器人名称
    private String robotName;

    //导航状态
    private String taskStatus;

    //车辆状态
    private String rgvStatus;

    //母车实际状态
    private String rgvActStatus;

    //任务id
    private Integer taskId;

    //任务类型
    private String wcsTaskType;

    //目的位置, 当前目标站点
    private String targetStation;

    //故障原因
    private String highestError;

    //托盘状态
    private PalletStatus palletStatus;

    //自动充电
    private Boolean isAutoCharge;

    //控制权
    private Boolean hasRgvAuthor;

    //记录位置
    private String lastLocation;

    //充电位置
    private String chargeLocation;

    //站点
    private String currentMap;

    //当前角度，机器人位置（第三个数据）
    private Float angle;

    //上方有托盘
    private String hasCargo;

    //货所属任务号
    private Integer cargoTaskId;

    //定位状态
    private String relocStatus;

    //地图载入状态
    private String loadMapStatus;

    //当前站点
    private String currentStation;

    //上一个点的站点
    private String lastStation;

    //序列号
    private String serialNum;

    //在线
    private String onLine;

    //导航在线
    private String routeOnLine;

    //配置在线
    private String configOnLine;

    //心跳在线
    private String robotStateOnLine;

    //控制在线
    private String controlOnLine;

    //故障
    private List<String> errorInfos;
    //DI
    private List<String> robotDI;
    //DO
    private List<String> robotDO;
    //托盘是否启用
    private String palletEnable;

    //托盘动作异常码
    private Integer palletActionErrorCode;

    //x坐标,距离原点的距离，机器人位置（第一个数据）
    private Double x;

    //y坐标,距离原点的距离，机器人位置（第二个数据）
    private Double y;

    //置信度（0-1）
    private Double confidence;

    //障碍物阻挡，阻挡
    private String blocked;

    //阻挡原因
    private String blockReason;

    //障碍物x坐标，最近障碍物（第一个数据）
    private Float blockX;

    //障碍物y坐标，最近障碍物（第二个数据）
    private Float blockY;

    //是否连接充电桩
    private String autoCharge;

    //充电中
    private String charging;

    //导航类型
    private String taskType;

    //当前站点
    private String robotCurrentStation;

    //当前目标点坐标：x，y，角度
    private Float targetX;
    private Float targetY;
    private Float targetR;

    //距离目标点距离
    private Float targetDistance;

    //已经过站点
    private String lastPoints;

    //未经过站点
    private String targetPoints;

    //机器人所在区域
    private String area;

    //控制模式
    private String mode;

    //运行状态
    private String rollerMode;

    //底盘是否静止
    private String isStop;

    //当前地图MD5
    private String currentMapMD5;

    //当前连接 Wifi 的信号强度，0-100 百分比（机器人需要支持连接 Wifi 并且已经连接，否则为0）
    private Integer wifiStrength;

    //小车存储的地图
    private List<String> maps;

    //累计里程,km
    private Double odo;

    //今日累计里程,m
    private Double todayOdo;

    //累计运行时间
    private Integer runningTimeSeconds;
    private Integer runningTimeMinute;
    private Integer runningTimeHour;
    private Integer runningTimeDay;

    //本次运行时间
    private Integer curRunningTimeSeconds;
    private Integer curRunningTimeMinute;
    private Integer curRunningTimeHour;
    private Integer curRunningTimeDay;

    //控制器电压
    private Float controlVolt;

    //控制器温度
    private Float controlTemp;

    //控制器湿度
    private Float controlWet;

    //电池电量0-1
    private Float batSoc;

    //电池温度,℃%
    private Float batTemp;

    //电池电压
    private Float batVolt;

    //电池电流
    private Float batCur;

    //电池循环次数
    private Integer chargeNum;

    //电池数据（自定义）
    private String batDes;

    //支持最大充电电压
    private Float permitMaxChgVolt;

    //支持最大充电电流
    private Float permitMaxChgCur;

    //急停
    private String driveEmc;

    //抱闸
    private String holdBrake;

    //机器人ID
    private String robotId;

    //机器人备注
    private String robotNote;

    //机器人型号
    private String robotType;

    //Robokit版本
    private String robokitVersion;

    //IO输入
    private Boolean[] DI;
    //IO输出
    private Boolean[] DO;

    public Rgv60InfoSingle() {
        DI = new Boolean[9];
        DO = new Boolean[9];
    }
}
